package imnu.th.tongxin;

/**
 * @author: lys
 * @类名: Kitchen
 * @Title:
 * @date: 2020/7/22
 **/
public class Kitchen {
    //定义属性 食物，初始化为0
    private int food = 0;
    //做饭
    public synchronized void do_cock() throws InterruptedException {
        //当food值为1时，说明有食物，不需要做饭，当孩子吃完饭后，food的值为0时，开始做饭
        if (1 == food){
            wait();
        }else {
            System.out.println(Thread.currentThread().getName()+"正在做饭。。。");
            Thread.sleep(2000);
            //饭做好了 food+1
            food++;
            System.out.println("饭已经做好了。 food="+food);
            //唤醒其他线程吃饭
            this.notifyAll();
        }
    }
    //吃饭
    public synchronized void do_eat() throws InterruptedException {
        if (0 == food){
            //当食物为0时，说明没有食物可以吃，孩子需要等待
            this.wait();
        }else {
            //吃饭的只能是孩子们，所以调用该方法的当前线程为孩子
            Chid c = (Chid) Thread.currentThread();
            System.out.println(c.getName()+"正在吃饭。");
            Thread.sleep(1000);
            //吃饭食物，food-1
            food--;
            //吃完饭那后体力值加1
            c.setHp(c.getHp()+1);
            System.out.println(c.getName()+"目前体力值为"+c.getHp());
            System.out.println("food = "+food);
            System.out.println();
            //吃完饭唤醒妈妈做饭
            this.notifyAll();
        }
    }

    public int getFood() {
        return food;
    }

    public void setFood(int food) {
        this.food = food;
    }
}
